package model;

import DAO.ClanekDAO;
import DAO.DAOFactory;
import core.BlogException;
import core.Clanek;
import java.util.List;

/**
 * Model pro Clanek
 * @author vojta
 */
public class ClanekModel {

    DAOFactory f;
    ClanekDAO dao;

    public ClanekModel() throws BlogException {
        f = DAOFactory.getInstance();
        dao = f.getClanekDAO();
    }

    /**
     * Pridat novy clanek 
     * @param c - clanek na pridani
     * @throws BlogException 
     */
    public void addClanek(Clanek c) throws BlogException {
        dao.addClanek(c);
    }

    /**
     * Odstani clanek
     * @param c - clanek na odstraneni
     * @throws BlogException 
     */
    public void removeClanek(Clanek c) throws BlogException {
        dao.removeClanek(c);
    }

    /**
     * Edituje clanek podle jeho id 
     * @param c - clanek na editaci + jeho obsah
     * @throws BlogException 
     */
    public void editClanek(Clanek c) throws BlogException {
        dao.editClanek(c);
    }

    /**
     * Ziska clanek
     * @param c - clanek obsahujici ID
     * @return Clanek
     * @throws BlogException 
     */
    public Clanek getClanek(Clanek c) throws BlogException {
        return dao.getClanek(c);
    }

    /**
     * Ziska seznam clanku v kategorii kat
     * @param kat - kategorie
     * @return List<Clanek>
     * @throws BlogException 
     */
    public List<Clanek> getClankyVKategorii(int kat) throws BlogException {
        return dao.getClankyVKategorii(kat);
    }

    /**
     * Pridani precteni clanku 
     * @param c - Clanek
     * @throws BlogException 
     */
    public void pridejPrecteniClanku(Clanek c) throws BlogException {
        dao.pridejPrecteniClanku(c);
    }

    /**
     * Zvysi hodnoceni clanku
     * @param c - Clanek
     * @throws BlogException 
     */
    public void zvysHodnoceniClanku(Clanek c) throws BlogException {
        dao.zvysHodnoceniClanku(c);
    }

    /**
     * Snizi hodnoceni clanku
     * @param c - Clanek
     * @throws BlogException 
     */
    public void snizHodnoceniClanku(Clanek c) throws BlogException {
        dao.snizHodnoceniClanku(c);
    }

    /**
     * Ziska x nejnovejsich clanku
     * @param pocet - kolik clanku se ma ziskat
     * @return List<Clanek>
     * @throws BlogException 
     */
    public List<Clanek> getNejnovejsiClanky(int pocet) throws BlogException {
        return dao.getNejnovejsiClanky(pocet);
    }

    /**
     * Vyhleda fulltextove clanky a vrati je
     * @param text - hledany text
     * @return List<Clanek>
     * @throws BlogException 
     */
    public List<Clanek> getFulltextClanky(String text) throws BlogException {
        return dao.getFulltextClanky(text);
    }
}
